package com.yunhe.inspect.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.yunhe.inspect.model.InspectOrderItem;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;
import java.io.Serializable;
import java.util.List;

/**
 * @description 巡检工单表
 * @author misty
 * @date 2021-11-10
 */
@Data
@ApiModel("巡检工单表")
public class DataInspectOrder implements Serializable {


    private static final long serialVersionUID = -1039982586978915624L;
    /**
     * 工单id
     */
    @ApiModelProperty("工单id")
    private Integer id;

    /**
     * 虚拟园区id
     */
    @ApiModelProperty("虚拟园区id")
    private Long stationId;

    /**
     * 巡检工单标题
     */
    @ApiModelProperty("巡检工单标题")
    private String inspectOrderTitle;

    /**
     * 巡检工单编号
     */
    @ApiModelProperty("巡检工单编号")
    private String inspectOrderNo;

    /**
     * 巡检计划id
     */
    @ApiModelProperty("巡检计划id")
    private Long inspectPlanId;

    /**
     * 所属部门
     */
    @ApiModelProperty("所属部门")
    private Long orgId;

    /**
     * 企业id
     */
    @ApiModelProperty("企业id")
    private Long companyId;

    /**
     * 企业名称
     */
    @ApiModelProperty("企业名称")
    private String companyName;

    /**
     * 房源id
     */
    @ApiModelProperty("房源id")
    private Long officeId;

    /**
     * 房源名称
     */
    @ApiModelProperty("房源名称")
    private String officeName;

    /**
     * 巡检类型
     */
    @ApiModelProperty("巡检类型")
    private String inspectType;

    /**
     * 巡检状态
     */
    @ApiModelProperty("巡检状态")
    private String inspectStatus;

    /**
     * 表单状态
     */
    @ApiModelProperty("表单状态")
    private String formStatus;

    /**
     * 检查人
     */
    @ApiModelProperty("检查人")
    private Long inspectOrderInspector;

    @ApiModelProperty("受检人")
    private Long inspectOrderSubject;

    /**
     * 工单生成时间
     */
    @ApiModelProperty("工单生成时间")
    private String inspectOrderGenerationTime;

    /**
     * 工单过期时间
     */
    @ApiModelProperty("工单过期时间")
    private String inspectOrderExpirationTime;

    /**
     * 是否删除 0 正常 1 删除
     */
    @ApiModelProperty("是否删除 0 正常 1 删除")
    private String isDelete;

    /**
     * 创建人
     */
    @ApiModelProperty("创建人")
    private Long creator;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    /**
     * 更新人
     */
    @ApiModelProperty("更新人")
    private Long updator;

    /**
     * 更新时间
     */
    @ApiModelProperty("更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;

    /**
     * 复审时间（整改截至日期）
     */
    @ApiModelProperty("复审时间（整改截止日期）")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date reviewTime;

    /**
     * 待巡检剩余天数
     */
    @ApiModelProperty("待巡检剩余天数")
    private Integer inspectRemainingDays;

    /**
     * 待复审剩余天数
     */
    @ApiModelProperty("待复审剩余天数")
    private Integer reviewRemainingDays;

    @ApiModelProperty("App排序字段")
    private String appOrder;

    public DataInspectOrder() {}

    private List<DataInspectOrderItem> dataInspectOrderItemList;

    /*******************zb*******************/

    /**
     * 企业是否查看 默认false
     * 企业查看后为 true
     * 只有已完成的巡检单会有
     * 入库
     */
    @ApiModelProperty("企业是否查看")
    private boolean whetherToCheck;

    /**
     * 内容是否更新
     * 企业上传整改单后为true 默认为false
     * 关联流程表查询
     */
    @ApiModelProperty("内容是否更新")
    private boolean contentUpdateFlag;

    /**
     * 整改单期限 0正常 1即将到期 2已超时
     * 根据复审时间来，临近2天的复审单为1即将到期
     * 关联整改单查询
     */
    @ApiModelProperty("整改单期限 0正常 1即将到期 2已超时")
    private String deadlineStatus;

    /**
     * 复审时间
     * 又名整改截止日期
     * 关联整改单查询
     */
    /*
    和上面的reviewTime代表同一个字段，此字段在代码中暂未用到，先注释
    @ApiModelProperty("复审时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd" )
    @JsonFormat(pattern = "yyyy-MM-dd")
    private String rectificationDeadline;
    */

    /**
     * 评审时间
     * 又名整改单接收时间
     */
    @ApiModelProperty("评审时间（整改单接收时间）")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date judgeTime;

    @ApiModelProperty("受检人签字（图片）")
    private String inspectedPersonSignature;

    /**
     * 巡检单期限 0正常 1即将到期 2已超时
     * 根据到期时间确定，临近3天到期的复审单为 1即将到期
     */
    @ApiModelProperty("巡检单期限 0正常 1即将到期 2已超时")
    private String inspectDeadlineStatus;

}